/* 
 * ControlUsuarios.js file
 */
$().ready(function(){
    namespace.usuariosDelSistema = new Array();
    namespace.modoCEUsuarios = "";
    
    traerUsuarios();
    
    $('.controlUsuarios_listado .controlUsuarios_crearNuevo').hover(function(){
        $(this).addClass("hover");
    },function(){
        $(this).removeClass("hover");
    })    
    .click(function(){
        namespace.modoCEUsuarios = "nuevo";
        crearUsuario();
    });   
})

function listarUsuarios(){
    $('.controlUsuarios_listado .controlUsuarios_contenedorLista').html("");
       
    $.each(namespace.usuariosDelSistema,function(i, value){       
       $('.controlUsuarios_listado .controlUsuarios_contenedorLista').append(
            "<div class=\"controlUsuarios_contenedorUsuario\">"+
                "<div class=\"controlUsuarios_datosUsuario\">&nbsp;&nbsp;&nbsp;"+value.nombreUsuario+"</div>"+
                "<div class=\"controlUsuarios_opciones\"> <a href=\"#\" class=\"controlUsuarios_modificar\"> Modificar </a> &nbsp; | &nbsp; <a href=\"#\" class=\"controlUsuarios_eliminar\"> Eliminar </a> &nbsp;&nbsp;</div>"
        );       
    });

    //Eventos    
    $('.controlUsuarios_contenedorUsuario').each(function(){       
       var padre = $(this);       
       $(this).find('.controlUsuarios_modificar').click(function(){
          namespace.modoCEUsuarios = "edicion";
          modificarUsuario( padre.find('.controlUsuarios_datosUsuario').text() );          
       });
       $(this).find('.controlUsuarios_eliminar').click(function(){
          eliminarUsuario( padre.find('.controlUsuarios_datosUsuario').text() );
       })        
    });    
}

function crearUsuario(){
   limpiarFormulario();
   $('.controlUsuarios_CEUsuarios').fadeIn();
   controlFormulario(null);
}

function modificarUsuario(nombre){
   limpiarFormulario();
   $('.controlUsuarios_CEUsuarios').fadeIn();
   controlFormulario(nombre);
}

function eliminarUsuario(nombre){
    if ( confirm("Seguro quiere eliminar el usuario "+nombre+"?") ){
        var usuario = traerUsuario(nombre);
        $.ajax({
              type: 'POST',
              url: 'php/MainController.php?accion=borrarUsuario',
              data: usuario,
              dataType: 'json',
              success: responseBorrarUsuario
         });       
    }
    $('.controlUsuarios_CEUsuarios').fadeOut();
}

function controlFormulario(nUsuario){
    if ( namespace.modoCEUsuarios == "edicion" ){
        $('.controlUsuarios_bloquePasswords').hide();
        var usuario = traerUsuario(nUsuario);
        $('#nombre').val(usuario.nombre);
        $('#nombreUsuario').val(usuario.nombreUsuario);
        $('#email').val(usuario.email);
    }else{
        limpiarFormulario();
        $('.controlUsuarios_bloquePasswords').show();
    }
}

function traerUsuario(nombre){
    var retorno = null;    
    $.each(namespace.usuariosDelSistema,function(i, value){
        if ( $.trim(value.nombreUsuario) == $.trim(nombre) ){
            retorno = value;            
            return retorno;            
        }
    });
    return retorno;
}

function indiceDeUsuario(nombre){
    var retorno = null;    
    $.each(namespace.usuariosDelSistema,function(i, value){
        if ( value.nombreUsuario == nombre ){
            retorno = i;
            return;            
        }
    });
    return retorno;    
}

function limpiarFormulario(){
    $('#nombre').val("").removeClass("inputError");
    $('#nombreUsuario').val("").removeClass("inputError");
    $('#email').val("").removeClass("inputError");
    $('#password').val("").removeClass("inputError");
    $('#passVerificacion').val("").removeClass("inputError");
    $('.index_errores').html("").hide();
}

function limpiarBordeInputs(){
    $('#nombre').removeClass("inputError");
    $('#nombreUsuario').removeClass("inputError");
    $('#email').removeClass("inputError");
    $('#password').removeClass("inputError");
    $('#passVerificacion').removeClass("inputError");
}

function guardar(){
    mostrarLoadingEnSubmit("inputsSubmit");
    limpiarBordeInputs();
    $('.index_errores').html("").hide();
    
    var nombre      = $('#nombre').val();
    var nUsuario    = $('#nombreUsuario').val();
    var email       = $('#email').val();
    var password    = $('#password').val();
    var passVerif   = $('#passVerificacion').val();
    
    var erroresValidacionesMsg = "Error: Verifique los campos con borde rojo.";
    
    var errores = false;
    
    if ( esCadenaVacia(nombre) )        {$('#nombre').addClass("inputError");errores = true;}
    if ( !validarEmail(email) )         {$('#email').addClass("inputError");errores = true;}
    if ( password != passVerif )        {$('#passVerificacion').addClass("inputError");errores = true;}
    if ( namespace.modoCEUsuarios == "nuevo" ){
        if ( esCadenaVacia(nUsuario) )      {$('#nombreUsuario').addClass("inputError");errores = true;}
        if ( !validarPassword(password) )   {$('#password').addClass("inputError");errores = true;}
    }    
    
    if ( errores ){
        $('.index_errores').html(erroresValidacionesMsg).fadeIn();
        ponerValorEnSubmit("inputsSubmit", "Guardar");
        return;
    }else{
        var u;
        namespace.aux.u = new Usuario();
        
        if ( namespace.modoCEUsuarios == "nuevo" ){
            u = namespace.aux.u;
            u.nombre = nombre;u.nombreUsuario = nUsuario;u.email = email;u.yaPersistido = false; u.password = password;            
        }else{
           var uO = traerUsuario(nUsuario);
           u = namespace.aux.u;
           u.nombre = nombre;
           u.email = email;
           u.nombreUsuario = uO.nombreUsuario;
           u.yaPersistido = true;
        }        
        
        $.ajax({
            type: 'POST',
            url: 'php/MainController.php?accion=guardarUsuario',
            data: u,
            dataType: 'json',
            success: function(data,a,b){
                responseCrearGuardarUsuario(data, a, b, u);
            }
        });        
    }
}

function traerUsuarios(){
    $.ajax({
              type: 'POST',
              url: 'php/MainController.php?accion=getUsuarios',
              data: null,
              dataType: 'json',
              success: responseTraerUsuarios
            });   
}

function responseTraerUsuarios(data,a,b){
    namespace.response = data;
    if ( namespace.response.success == "undefined" || namespace.response.success == undefined ){
        namespace.usuariosDelSistema = data;
        listarUsuarios();
    }   
}

function responseCrearGuardarUsuario(data,a,b,usuario){
        
        if ( data.success == "false" || data.success == false ){
            $('.index_errores').html(data.msj).fadeIn();
            ponerValorEnSubmit("inputsSubmit", "Guardar");
            return;
        }
        if ( namespace.modoCEUsuarios != "nuevo" ){
            var uEnArray = traerUsuario(usuario.nombreUsuario);
            uEnArray.nombre = usuario.nombre;uEnArray.nombreUsuario = usuario.nombreUsuario;
            uEnArray.email = usuario.email;uEnArray.yaPersistido = true;            
        }else{
            namespace.usuariosDelSistema.push(usuario);
        }
        
        ponerValorEnSubmit("inputsSubmit", "Guardar");
        traerUsuarios();        
        $('.controlUsuarios_CEUsuarios').fadeOut();
}

function responseBorrarUsuario(data,a,b){
    if ( data.success == false || data.success == "false" ) alert("Error: \n "+data.msj);
    traerUsuarios();
}